package com.abc.recycling.service;

import com.abc.recycling.domain.SysConfig;
import java.util.List;

public interface SysConfigService {
    
    /**
     * 创建配置
     * @param config 配置信息
     * @return 创建的配置
     */
    SysConfig createConfig(SysConfig config);
    
    /**
     * 更新配置
     * @param config 配置信息
     * @return 更新后的配置
     */
    SysConfig updateConfig(SysConfig config);
    
    /**
     * 获取配置详情
     * @param id 配置ID
     * @return 配置信息
     */
    SysConfig getConfig(Long id);
    
    /**
     * 根据键名获取配置
     * @param key 配置键名
     * @return 配置信息
     */
    SysConfig getConfigByKey(String key);
    
    /**
     * 获取所有配置
     * @return 配置列表
     */
    List<SysConfig> getAllConfigs();
    
    /**
     * 搜索配置
     * @param name 配置名称
     * @param configKey 配置键名
     * @param type 配置类型
     * @param status 状态
     * @return 配置列表
     */
    List<SysConfig> searchConfigs(String name, String configKey, String type, Integer status);
    
    /**
     * 更新配置状态
     * @param id 配置ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateConfigStatus(Long id, Integer status);
    
    /**
     * 删除配置
     * @param id 配置ID
     * @return 是否成功
     */
    boolean deleteConfig(Long id);
    
    /**
     * 检查键名是否存在
     * @param configKey 配置键名
     * @param excludeId 排除的ID
     * @return 是否存在
     */
    boolean isKeyExists(String configKey, Long excludeId);
    
    /**
     * 获取配置值
     * @param key 配置键名
     * @param defaultValue 默认值
     * @return 配置值
     */
    String getConfigValue(String key, String defaultValue);
    
    /**
     * 获取数字类型配置值
     * @param key 配置键名
     * @param defaultValue 默认值
     * @return 配置值
     */
    Integer getNumberValue(String key, Integer defaultValue);
    
    /**
     * 获取布尔类型配置值
     * @param key 配置键名
     * @param defaultValue 默认值
     * @return 配置值
     */
    Boolean getBooleanValue(String key, Boolean defaultValue);
} 